10 U$="[197][197][197][197][197][197][197][197][197][197]":O$="[164][164][164][164][164][164][164][164][164]":I$="INPUT-ROUTINE":B$=" BILDSCHIRM" 20 V$=" VERZOEGERUNG":S$="SCHLEIFE" 101 DATA 169,16,141,75,232,169,15,141,74,232,169,128,141,72,232,32,83,3 102 DATA 169,0,141,75,232,96,96,160,0,162,0,202,208,253,136,208,248,96 103 DATA 169,16,141,75,232,169,15,141,74,232,169,0,133,1,165,1,141,72,232,160 104 DATA 1,32,128,3,230,1,208,242,169,0,141,75,232,96,162,64,202,208,253,96 200 PRINT"[147][164][164][164]";O$;O$;O$;O$:PRINT"SYNTAX-LEHRGANG 'MASCHINENSPRACHE' (13) 210 [153]"TOTOTOTOTOTOTO";O$:[153]"4. ZEIT"S$"N 220 PRINT"GELEGENTLICH STEHT MAN VOR DEM PROBLEM, 230 [153]"EIN PROGRAMM FUER EINE BESTIMMTE ZEIT 240 PRINT"VERZOEGERN ZU MUESSEN. IN BASIC FUEGT 250 [153]"MAN IM ALLGEMEINEN EINE WARTE"S$ 260 [153]"EIN. WIE WARTE"S$"N IN MASCHINEN- 270 PRINT"PROGRAMMEN AUSGEFUEHRT WERDEN UND WIE 280 [153]"MAN IHRE ZEITLICHE DAUER BERECHNET,WOL- 290 PRINT"LEN WIR UNS IM FOLGENDEN ANSEHEN. 300 [140]:[129]I[178]0[164]75:[135]X:[151]826[170]I,X:[130] 310 I[178]1:[141]5000:[139]FL[167]200 400 [153]"LOAD"O$;O$;O$"TOTO" 410 [153]"4.1 KURZE"V$"SZEITENWAIT 420 PRINT"SEHEN WIR UNS GLEICH EIN BEISPIEL AN: 430 [153]" LDX #$00 (2) 440 PRINT" [176][192]DEX (2) 450 [153]" ON(null)CMD/_BNE $FD (3) 460 PRINT" RTS (6) 470 [153]"DIE ZAHLEN IN KLAMMERN HINTERCLOSE DEN BE- 480 PRINT"FEHLEN GEBEN AN, WIE VIELE TAKTZYKLEN 490 [153]"DER BEFEHL BENOETIGT. BEI EINER TAKT- 500 PRINT"FREQUENZ VON 1 MHZ DAUERT JEDER TAKT 510 [153]"EINE MIKROSEKUNDE. 520 I=2:GOSUB5000:IFFLTHEN200 600 PRINT"[147]MAN SIEHT LEICHT, DASS HIER EINE PRO- 610 [153]"GRAMM"S$" AUSGEFUEHRT WIRD.MAN WIRD 620 PRINT"EBENFALLS SOFORT VERSTEHEN, DASS DIE 630 [153]"AUSFUEHRUNG EINER SOLCHEN PROGRAMM- 640 PRINTS$" EINE GEWISSE ZEIT BENOETIGT. 650 [153]"IN DIESER "S$" PASSIERT NICHTS 660 PRINT"ANDERES, ALS DASS DAS XR BIS $00 DEKRE- 670 [153]"MENTIERT WIRD. DER STARTWERT IST (HIER) 680 PRINT"EBENFALLS $00, ALSO WIRD DIE "S$ 690 PRINT"GENAU 256 MAL DURCHLAUFEN. 720 I[178]3:[141]5000:[139]FL[167]400 800 [153]"LOADJEDER "S$"NDURCHLAUF DAUERT GENAU 810 PRINT"2 + 3 = 5 TAKTZYKLEN. WENN DIE "S$ 820 PRINT"256 MAL DURCHLAUFEN WIRD, SO DAUERT DAS 830 [153]"ALSO: 256 * 5 = 1280 TAKTZYKLEN. HINZU 840 PRINT"KOMMEN NOCH ETWA 10 ZYKLEN FUER DIE AN- 850 [153]"DEREN BEFEHLE, INSGESAMT DAUERT DIESE 860 PRINTS$" ALSO CA 1290 ZYKLEN. DAS SIND 870 [153]"1290 MIKROSEKUNDEN BZW. 1.29 MILLISEC. 880 PRINT"WAEHLT MAN ALS STARTWERT FUER DAS XR 890 [153]"NICHT $00, SONDERN EINEN ANDEREN WERT, 900 PRINT"SO WIRD DIE ZEIT ENTSPRECHEND KUERZER. 930 I[178]4:[141]5000:[139]FL[167]600 1000 [153]"LOADMIT WELCHEM STARTWERT ERREICHT MAN BEI- 1010 PRINT"SPIELSWEISE EINE"V$"SZEIT VON 1020 [153]"1.0 MSEC ? 1030 PRINT"LOESUNG: 1 MSEC = 1000 MIKROSEC. 1040 [153]"HIERVON ZIEHEN WIR FUER DIE BEFEHLE 1050 PRINT"AUSSERHALB DER "S$" CA 10 AB (=990) 1060 [153]"UND TEILEN DURCH DIE ZEIT, DIE FUER JE- 1070 PRINT"DEN "S$"NDURCHLAUF BENOETIGT WIRD: 1080 [153]"990/5 = 198. DIES IST DIE ZAHL DER BE- 1090 PRINT"NOETIGTEN "S$"NDURCHLAEUFE FUER DIE 1100 [153]"GEWUENSCHTE"V$" VON 1 MSEC. 1130 I=5:GOSUB5000:IFFLTHEN800 1200 PRINT"[147]DER STARTWERT FUER DAS XR IST ALSO 198 1210 [153]"ODER HEXADEZIMAL $C6. 1220 PRINT""O$;O$;O$"[164][164] 1230 [153]"4.2 LANGE"V$"SZEITEN 1240 PRINT"OFT REICHT EINE"V$"SZEIT VON 1250 [153]"NUR MAXIMAL 1.3 MSEC NICHT AUS. IN SOL- 1260 PRINT"CHEN FAELLEN WENDEN WIR VERSCHACHTELTE 1270 [153]S$"N AN. WIR BETTEN UNSERE VERZOE- 1280 PRINT"GERUNGS"S$" ALSO IN EINE ZWEITE 1290 [153]S$" EIN. DAS SIEHT BEISPIELSWEISE 1300 PRINT"SO AUS: 1320 I[178]6:[141]5000:[139]FL[167]1000 1400 [153]"LOAD LDY #$00 (2) 1410 PRINT" [176][192][192]LDX #$00 (2) 1420 [153]" (null)CMD(null)ORTANDEX (2) > (2+3)*256=1280ON 1430 PRINT" [221][221][157][157][221][173]_BNE $FD (3) 1440 [153]" (null)CMD(null) DEY (2) 1450 PRINT" [221][157][173][192]_BNE $F8 (3) 1460 [153]" RTS (6) 1470 PRINT"WIE LANGE DAUERT DIESE "S$" ? 1480 [153]"LOESUNG: DIE AEUSSERE "S$" WIRD 256 1490 PRINT"MAL DURCHLAUFEN. JEDER DURCHLAUF DAUERT 1500 [153]"2 + 1280 + 2 + 3 = 1287 ZYKLEN. 1530 I=7:GOSUB5000:IFFLTHEN1200 1600 PRINT"[147]DIE GESAMTDAUER IST ALSO: 1610 [153]"2 + 1287 * 256 + 6 = 329480 TAKTZYKLEN. 1620 PRINT"DAS SIND IMMERHIN SCHON 0.33 SEC ! BAUT 1630 [153]"MAN DIESE ROUTINE ALS UNTERPROGRAMM IN 1640 PRINT"EIN MASCHINENPROGRAMM EIN, SO KANN MAN 1650 [153]"DURCH DREIMALIGES AUFRUFEN ALSO VERZOE- 1660 PRINT"GERUNGSZEITEN VON 1 SEC ERREICHEN. 1670 [153]"IM NAECHSTEN ABSCHNITT LERNEN WIR EINE 1680 PRINT"MOEGLICHE ANWENDUNG KENNEN. 1710 I[178]8:[141]5000:[139]FL[167]1400 1800 [153]"LOAD"O$;O$ 1810 [153]"5. TONAUSGANG CB2 1820 PRINT"AUS BASIC-PROGRAMMEN IST IHNEN SICHER 1830 [153]"BEKANNT, DASS UEBER DEN AUSGANG CB2 DES 1840 PRINT"USERPORTS TOENE ERZEUGT WERDEN KOENNEN. 1850 [153]"IN BASIC MACHT MAN DAS FOLGENDERMASSEN: 1860 PRINT"1. POKE 59467,16:REM CB2 EINSCHALTEN 1870 [153]"2. POKE 59466,15:REM SIGNALFORM WAEHLEN 1880 PRINT"3. POKE 59464,..:REM FREQUENZ (0-255) 1890 [153]"4. ... WARTE"S$" (FOR ... NEXT) 1900 PRINT"5. POKE 59467,0: REM CB2 AUSSCHALTEN 1930 I[178]9:[141]5000:[139]FL[167]1600 2000 [153]"LOADDAS SETZEN WIR EINFACH IN MASCHINEN- 2005 X$="[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]" 2010 PRINT"SPRACHE UM:":PRINTX$ 2020 PRINT" LDA #$10 (= DEZ. 16) 2040 [153]"1. < STA $E84B (= DEZ. 59467)":[153]X$ 2050 [153]" LDA #$0F (= DEZ. 15) 2055 PRINT"2. < STA $E84A (= DEZ. 59466)":PRINTX$ 2060 PRINT" LDA #$80 (= DEZ. 128) 2065 [153]"3. < STA $E848 (= DEZ. 59464)":[153]X$ 2070 [153]"4. JSR $.... (VERZOEGERUNGS"S$")":[153]X$ 2080 [153]" LDA #$00 (= DEZ. 0) 2090 PRINT"5. < STA $E84B (= DEZ. 59467)":PRINTX$ 2100 PRINT" RTS 2130 I[178]10:[141]5000:[139]FL[167]1800 2200 [153]"LOADDIE"V$" SOLL 0.33 SEC SEIN. 2210 PRINT"DAS PROGRAMM STEHT IM RAM AB 826. HIER 2220 [153]"EINE DEMONSTRATION:"[163]31)"TOTOTOTOTOTO 2230 PRINT TAB(30)"<RETURN[146]> 2240 [161]X$:[139]X$[179][177][199](13)[167]2240 2250 [158]826 2260 [153]"NOCHMAL (J/N) ?" 2270 [161]X$:[139]X$[178]""[167]2270 2280 [139]X$[178]"J" [167][153]"ON ONONON":[137]2250 2290 [139]X$[179][177]"N"[167]2270 2300 [153]"NUN WOLLEN WIR DAS PROGRAMM AENDERN. 2310 PRINT"ES SOLL EINEN TON ERZEUGEN, DESSEN FRE- 2320 [153]"QUENZ DEN GANZEN MOEGLICHEN BEREICH 2330 PRINT"UEBERSTREICHT. DIE ERSTEN VIER BEFEHLE 2340 [153]"BLEIBEN UNVERAENDERT. 2350 I=11:GOSUB5000:IFFLTHEN2000 2400 PRINT"[147] LDA #$00 2410 [153]" STA $01 (ZWISCHENSPEICHER) 2415 PRINT" LDA $01 (ZWISCHENSPEICHER) 2416 [153]" STA $E848 (= DEZ. 59464) 2420 PRINT" [176][192]JSR $.... ("V$"S"S$") 2430 [153]" ON(null)CMD(null) INC $01 (ZWISCHENSPEICHER) 2440 PRINT" [145][221][157][173]_BNE $F8 2445 [153]"DER INHALT VON 59464 (FREQUENZ) WIRD 2450 PRINT"256 MAL UM 1 ERHOEHT. WIR WAEHLEN DIES- 2460 [153]"MAL EINE KUERZERE"V$". 2510 I=12:GOSUB5000:IFFLTHEN2200 2600 PRINT"[147]AUCH HIERFUER EINE DEMONSTRATION,ALLER- 2610 [153]"DINGS RUFEN WIR DIE ROUTINE GLEICH 5 2620 PRINT"MAL HINTEREINANDER AUF: 2630 [153][163]31)"ONTOTOTOTOTOTO":[153][163]30)"<RETURNWAIT> 2640 GETX$:IFX$<>CHR$(13)THEN2640 2650 FORI=1TO5:SYS 862:NEXT 2660 PRINT"NOCHMAL (J/N) ?" 2670 GETX$:IFX$=""THEN2670 2680 IFX$="J" THENPRINT"[145] [145][145]":GOTO2650 2690 IFX$<>"N"THEN2670 2691 PRINT"AUFGABEN: 2692 [153]"1. WIE LANGE DAUERT DIE SUCHROUTINE AUS 2694 PRINT"DER LETZTEN LEKTION ? 2696 [153]"2. PROBIEREN SIE, DAS ZWISCHENSPEICHERN 2698 PRINT"IM LETZTEN BEISPIEL IN DIE CPU ZU VER- 2700 [153]"LAGERN (TIP: YR, ABER VORSICHT MIT DER 2702 PRINT"WARTE"S$"!) 2710 [153]"- SEITE 13 - <+> ONTOTOTOTOCMDCMDCMDCMDENDEWAIT <-> VON VORNE"; 3060 [141]5020:[145]FL[137]0 3070 [153]"LOAD":[128] 5000 [143] UMBLAETTERN 5010 [153]" - SEITE";I;"- <+> WEITER <-> ZURUECK"; 5020 [129]I[178]0[164]11:[161]X$:[130] 5030 [161]X$:[139]X$[178]""[167]5030 5040 [139]X$[178]"+"[167]FL[178]0:[142] 5050 [139]X$[178]"-"[167]FL[178]1:[142] 5060 [137]5030